package com.jie.day2.able2.factory;


import com.jie.day2.able2.enums.HumanEnum;
import com.jie.day2.able2.abs.Human2;

/**
 * 编写一个抽象类，根据enum创建一个人类出来
 *
 * @author jie
 * @date 2019/12/9 -11:09
 */
public abstract class AbstractHumanFactory implements HumanFactory {

    /**
     * 给定一个性别人种，创建一个人类出来，专业术语是产生产品等级
     */
    protected Human2 createHuman(HumanEnum humanEnum){
        Human2 human2 = null;

        //如果传递进来不是一个Enum中具体的一个Element的话，则不处理
        if (!"".equals(humanEnum.getValue())){
            try {
                //直接产生一个实例
                human2 = (Human2)Class.forName(humanEnum.getValue()).newInstance();
            }catch (Exception e){
                //因为使用了enum，这个异常情况不会产生了，除非你的enum有问题
                e.printStackTrace();
            }
        }
        return human2;
    }
}
